package com.aaa.sys.controller;

import com.aaa.sys.entity.Role;
import com.aaa.sys.service.RoleService;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;

import com.aaa.common.util.BaseController;
import com.aaa.common.util.Result;
import com.aaa.common.vo.Page;

import java.util.List;


/**
 * 角色信息表(Role)表控制层
 *
 * @author makejava
 * @since 2023-06-23 15:37:30
 */
@RestController
@RequestMapping("role")
public class RoleController extends BaseController {
    /**
     * 服务对象
     */
    @Resource
    private RoleService roleService;

    /**
     * 查询所以角色
     * @return
     */
    @GetMapping("queryAll")
    public Result queryAll(){
        return success(roleService.queryAll());
    }

    /**
     * 更新角色权限表，删除角色
     * @param roleId
     * @return
     */
    @GetMapping("updateMenuIdDelRoleId")
    public Result updateMenuIdDelRoleId(Integer roleId){
        return success(roleService.updateMenuIdDelRoleId(roleId));
    }

    /**
     * 批量添加角色和权限
     * @param roleId
     * @param menuIdString
     * @return
     */
    @GetMapping("batchInsertRoleMenu")
    public Result batchInsertRoleMenu(Integer roleId, String menuIdString){
        int sucNum = roleService.batchInsertRoleMenu(roleId, menuIdString);
        return success(sucNum);
    }

    /**
     * 根据菜单id查询角色id
     * @param roleId
     * @return
     */
    @GetMapping("queryMenuIdsByRoleId")
    public Result queryMenuIdsByRoleId(Integer roleId){
        List<Integer> menuIdList = roleService.queryMenuIdsByRoleId(roleId);
        return success(menuIdList);
    }

    /**
     * 分页查询
     *
     * @param page 分页查询封装
     * @return 查询结果
     */
    @PostMapping("queryByPage")
    public Result queryByPage(@RequestBody Page<Role> page) {
        //System.out.println("page---------------"+page);
        return success(this.roleService.queryByPage(page));
    }

    /**
     * 通过主键查询单条数据
     *
     * @param id 主键
     * @return 单条数据
     */
    @GetMapping("queryById")
    public Result queryById(Integer id) {
        return success(this.roleService.queryById(id));
    }

    /**
     * 新增数据
     *
     * @param role 实体
     * @return 新增结果
     */
    @PostMapping("add")
    public Result add(@RequestBody Role role) {
        return success(this.roleService.insert(role));
    }

    /**
     * 编辑数据
     *
     * @param role 实体
     * @return 编辑结果
     */
    @PostMapping("edit")
    public Result edit(@RequestBody Role role) {
        return success(this.roleService.update(role));
    }

    /**
     * 删除数据
     *
     * @param id 主键
     * @return 删除是否成功
     */
    @DeleteMapping("deleteById")
    public Result deleteById(Integer id) {
        return success(this.roleService.deleteById(id));
    }

}

